/**
 *
 */
package com.ce.pms.house.service;

import java.util.List;
import java.util.Map;

import com.ce.pms.base.service.IPmsBaseService;
import com.ce.pms.house.model.AreaDomain;
import com.ce.pms.house.model.Layout;
import com.ce.pms.house.vo.AreaVO;
import com.ce.pms.house.vo.LayoutVO;
import com.ce.pms.house.vo.ProjectVO;

/**
 * 功能描述: IAreaService
 * <p>版权所有：中企动力
 * <p>未经本公司许可，不得以任何方式复制或使用本程序任何部分
 *
 * @author  付湘辉
 * Created on：  2008-6-25
 * @author  付湘辉
 * update on：  2008-6-25
 */

public interface IAreaService extends IPmsBaseService {

	   /**

	    * 1. 根据AreaVO中的areaId查询AreaDomain实例.
	    * 2. 根据AreaVO中图片信息(是否图片已修改),调用"图    片服务"更新图片信息.
	    * 3. 根据AreaVO中基本信息(名称,地址,交通位置图(当
	    * 前图片),是否分期)设置/覆盖前面检索到的          AreaDomain实例.
	    * 4. 当hasMoreProject=0时, 如果楼盘关联的期资料大
	    * 于1笔时,异常提示用户"数据有误,请联系系统管理
	    * 员".否则,当楼盘关联期数资料笔数等于0时,调用
	    * IProjectService创建一笔期数资料;当楼盘关联期    数资料笔数等于1时,不做任何操作.
	    * 5. 调用DAO更新AreaDomain实例.
	    * 6. 根据更新返回的AreaDomain实例装配AreaVO
	    * @param areaVO
	    * @return AreaVO
	    * @roseuid 483E5A04001F
	    */
	   public AreaVO editBase(AreaVO areaVO);

	   /**
	    * 算法描述:
	    * 1. 根据AreaVO中的areaId查询AreaDomain实例.
	    * 2. 根据AreaVO中Layout设置/覆盖上面检索到的      AreaDomain实例中的建设规划信息.
	    * 3. 调用DAO更新AreaDomain实例
	    * 4. 根据更新返回的AreaDomain实例装配AreaVO
	    * @param areaVO
	    * @return AreaVO
	    * @roseuid 47FDC3DD000F
	    */
	   public AreaVO editLayout(AreaVO areaVO);

	   /**
	    * 算法描述:
	    * 1. 根据AreaVO中的areaId查询AreaDomain实例.
	    * 2. 根据AreaVO中policeStation,streetOrg,
	    *    bottomOrg信息设置/覆盖上面检索到的            AreaDomain实例.
	    * 3. 调用DAO更新AreaDomain实例
	    * 4. 根据更新返回的AreaDomain实例装配AreaVO
	    * @param areaVO
	    * @return AreaVO
	    * @roseuid 47FDC3DD008C
	    */
	   public AreaVO editGovtRelation(AreaVO areaVO);

	   /**
	    * 算法描述:
	    *     1. 根据AreaVO创建QueryCondition实例,封装查询条件.
	    *     2. 访问数据库检索AreaDomain实体
	    *     3. 根据检索结果装配List<AreaVO>
	    * @param o
	    * @param pageNo
	    * @param pageSize
	    * @return List<AreaVO>
	    * @roseuid 480DB1550290
	    */
	   public List<AreaVO> queryAreas(AreaVO o, int pageNo, int pageSize);

	   /**
	    * 算法描述:
	    * 1. 读取AreaVO中主域对象的keyword
	    * 2. 根据keyword检索主域对象AreaDomain实例
	    * @param id
	    * @return AreaVO
	    * @roseuid 4802CDAC02FD
	    */

	   public AreaVO findAreaById(Long id);

	   /**
	    * 算法描述:
	    * 1. 当hasMoreProject=0时,调用IProjectService,查询当前楼盘的期数资料.
	    * 2. 当期数资料数据大于1笔时,异常提示"请先删除原有期数资料,再来修改".
	    * @param o
	    * @roseuid 48478018035B
	    */

	   public boolean ifAllowMerge(AreaVO o);

	   /**
		 *
		 * 功能描述: 得到所有楼盘及其下的楼栋资料的树列表。
		 * 将每一个楼盘和其下的楼栋列表放入一个Map中，再将Map添加进一个列表，用于返回。
		 *
		 * @author 付湘辉
		 * Created on:2008-6-26
		 *
		 * 修改原因：
		 * @return List<Map> 返回结果
		 */
		public List<Map> queryAreaBuildingTreeList();
		/**
		 * 方法描述: Do to Vo
		 * @author 胡煦
		 * Create on:2008-6-26
		 * @param AreaDomain
		 * @return AreaVO
		 * Edit author:
		 * Edit on:
		 * 修改原因：
		 */
		public AreaVO assembleD2V(AreaDomain areaDo);
}
